package nutella89.basic;

import java.util.Scanner;

public class J20_BookDBMain {

	// JDBC 서비스 클래스, 키보드입력 클래스는
	// 객체 생성없이 바로 사용할 수 있도록
	// static 으로 선언
	private static J20_BookDBDAO srv 
					  = new J20_BookDBDAO();
	private static Scanner sc 
					  = new Scanner(System.in);
						
	private static final String TITLE = 
		" -= BooKDB 프로그램 =-";
	private static final String MENU = 
    "1)추가  2)전체조회  3)상세조회  4)수정  5)삭제  0)종료";
	
	private static final String ADDMSG =
		" 제목,출판사,저자 순으로 입력 ";
	private static final String VIEWMSG =
		" 상세 조회할 책 번호를 입력 ";
	private static final String UPDMSG =
		" 수정할 책 번호를 입력 ";		
	private static final String DELMSG =
		" 삭제할 책 번호를 입력 ";
	
	public static void main(String[] args) {
		
		System.out.println( TITLE );
		while(true) {
			System.out.println( MENU );
			switch (sc.nextInt()) {
				case 1:	newBookDB(); break;
				case 2:	readBookDB(); break;
				case 3:	readOneBookDB(); break;
				case 4:	modifyBookDB(); break;
				case 5:	removeBookDB(); break;
				case 0:	sc.close();
						System.exit(0);
						break;
			}
		}
		
	}
	
	// Main 클래스에서 DAO클래스의 메서드를 
	// 직접 호출하는 것은 OOP개념에 다소 위배
	
	// 캡슐화와 보안,유지보수 관점에서 볼때
	// 서비스 객체를 하나 더 만들어
	// 그것을 통해 DAO클래스의 메서드를 
	// 호출하는 것이 더 나음
	
	// 즉, Main -> DAO 보다는
	// Main -> service -> DAO 가 나음
	
	// DAO클래스의 메서드를 호출하는
	// 서비스 메서드를 static으로 선언
	private static void newBookDB(){
		System.out.println( ADDMSG );
		J20_BookDBVO bvo = 
			new J20_BookDBVO(
			sc.next(), sc.next(), sc.next());
		int cnt = srv.insertBookDB( bvo );
		if (cnt>0) System.out.println( 
						"추가성공!" );
	}
	private static void readBookDB(){
		System.out.println( 
				srv.selectBookDB() );
	}
	private static void readOneBookDB(){
		System.out.println( 
				srv.selectBookDB() );
		System.out.println( VIEWMSG );
		String id = sc.next();
		System.out.println(
			srv.selectBookDB( id ));
	}
	private static void modifyBookDB(){
		System.out.println( srv.selectBookDB() );
		System.out.println( UPDMSG );
		String id = sc.next();	// id입력
		
		System.out.println( ADDMSG );
		J20_BookDBVO bvo = 
			new J20_BookDBVO( sc.next(), 
				sc.next(), sc.next() );
		bvo.setId( id );
		
		if (srv.updateBookDB( bvo ) > 0)
			System.out.println("수정완료!");
	}
	private static void removeBookDB(){
		System.out.println( srv.selectBookDB() );
		System.out.println( DELMSG );
		String id = sc.next();
		if (srv.deleteBookDB(id)>0)
			System.out.println( "삭제완료!");
	}

}














